This application relates to a method and system for effecting migration of an application among heterogeneous devices or devices with different hardware configurations.
Migration is a process in which an application running on one device stops its task and moves to another device where it resumes the task exactly from the point where it terminated the task on the first device. In this regard, migration differs from remote execution, which is a process in which an application moves from one device to another device where it makes a fresh start irrespective of the state of the application that existed on the first device.
The need for mobility may be the main driving force of evolution of computing devices. The desktop computer has transformed itself into the notebook computer. The PDA and the intelligent pager are new species that recently joined the evolutional tree. Even the cellular phone has recently evolved into having computing capability. Now, these computing devices begin speaking with each other in the form of data communication through various communication networks, such as a wired or wireless LAN, cellular network, Bluetooth, and PAN (Personal Area Network).
The evolution of the computing devices has significant impact upon our life and is changing our business and work environments. Traditionally, since a PC was fixed on a desk and not movable, it was possible to work or process data only the places where a PC with equivalent software was found. Nowadays, however, mobile computing devices, such as a notebook computer, PDA and cellular phone, with sufficient computing capability are readily available to us. The users of these mobile devices may desire to capitalize the mobility of the devices to the full extent. Imagine how efficient and productive the uses can become if they can continue doing their work with a mobile computer at remote places or even while they are traveling. Suppose, for instance, that a mobile phone or PDA user is working on planning a business tip on line with a desktop computer in the office but interrupted by a call for a meeting at a remote place. In such a scenario, the user may desire to continue working on the business trip planning with the mobile phone or PDA on a train or bus on the way to the meeting place or during brakes of the meeting.
To respond to this need, the concept of migration of an application has developed, i.e., the concept that an application moves from one computing device (source device) to another computing device (target device), along with the state of the application. Migration addresses two technical issues: (1) uniformity of an application; and (2) continuity of the execution of an application.
The first issue comes from the differences in hardware configuration of computing devices. They are indeed different in almost every way—computation power, memory size, screen size, means for inputting data, etc. Because of these differences, the computing devices are usually loaded with different applications peculiar to their hardware configurations, yet performing the same job. For instance, we have “Microsoft Outlook” for desktop PCs, “Mail” for Palm PDAs and “PCS Mail” for SPRINT PCS Cell Phones. All of them are different applications but perform the same e-mail function. Users may wonder if they really have to learn how to use all of these different applications to just send and receive e-mails. Under the concept of migration, the same application runs on both source and target devices. Thus, migration serves to eliminate users' time for learning different applications, as well as software developers' time for developing different applications.
The second issue may probably be more challenging. The application restored on the target device is simply not ready to resume the task until it reestablishes the state of the application that existed on the source device. The state of the application includes the execution state and the data state. You could manually reconstruct the state of the application on the target device through troublesome operations, such as saving the application state before the application moves from the source device and reestablishing it after the application is restored on the target device. In a migration process, however, the application moves from the source device, along with the application state, and restart itself on the target device with the application state. Therefore, the application is ready to resume the task upon arrival on the target device.
A number of studies have been reported on various attempts to implement migration of an application. Significantly, most of these studies were conducted, using Java based software architectures. Java is a programming language and not dependent on the hardware configuration of a device on which it runs. More specifically, Java programs are complied into bytecodes, which are high-level, machine-independent codes, and then interpreted to run by a hypothetical interpreter, called a Java virtual machine (JVM). Since Java programs are machine independent, they run on different hardware platforms without the need to perform any special porting work for the programs. Because of this property, Java is often characterized as “Write Once, Run Anywhere.”
Because of its machine-independent property, Java is certainly useful and advantageous for implementing migration of an application among heterogeneous devices, i.e., devices with different hardware configurations. In fact, the past studies show that migration of an application under Java-based software architecture was successful at least in limited circumstances. But the problem of these prior studies is that migration of an application was conducted between selected source and target devices that were comparable and sufficiently resourceful for implementing migration of an application. In other words, migration of an application implemented in the prior studies was not actually achieved in really heterogeneous environments.
Obviously, the difficulty arises when an application is migrating from a resourceful device, such as a desktop PC, to a less resourceful device, such as a PDA. Compared to the desktop PC, the PDA is limited in its hardware resources, such as processing speed, memory size, availability of a permanent storage, and reliability of network connectivity. The question is whether migration of an application is nonetheless possible from a desktop PC to a PDA even when the application requires PC-level resources for its running and does not simply fit on the PDA. None of the past studies addresses this question.